home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / tabconvert.fpl < prev    next >
Text File  |  1995-07-18  |  2KB  |  91 lines

  1. void TabToSpace()
  2. {
  3.   int id=GetEntryID();
  4.   int new=DuplicateEntry();
  5.   int stopline=1, startline=ReadInfo("lines");
  6.  
  7.   if (new) {
  8.     int size, tabsize, bytepos, del, counter;
  9.     Visible(0);
  10.     if (ReadInfo("block_exist")) {
  11.       stopline=ReadInfo("block_begin_y");
  12.       startline=ReadInfo("block_end_y")-1;
  13.     }
  14.     if (startline>stopline) {
  15.       CurrentBuffer(new);
  16.       Status(id, "Tab converting.");
  17.       tabsize=ReadInfo("tab_size");
  18.       GotoLine(startline, ReadInfo("line_length", new, startline));
  19.       while (Search("\t", "f-")>=0 && ReadInfo("line")>=stopline) {
  20.         bytepos=ReadInfo("byte_position")-1;
  21.         size=0;
  22.         del=1;
  23.         while (bytepos>=0 && GetChar(bytepos)=='\t') {
  24.           bytepos--;
  25.           size+=tabsize;
  26.           del++;
  27.           CursorLeft();
  28.         }
  29.         size+=tabsize-((ReadInfo("column")-1)%tabsize);
  30.         Delete(del);
  31.         Output(sprintf(joinstr("%",ltostr(size), "lc"), ' '));
  32.         if (!(counter++&15))
  33.           Status(id, ltostr(ReadInfo("line")-stopline));
  34.       }
  35.     }
  36.     Kill(new);
  37.     CurrentBuffer(id);
  38.     Visible(1);
  39.   }
  40. }
  41.  
  42. void SpaceToTab()
  43. {
  44.   int id=GetEntryID();
  45.   int new=DuplicateEntry();
  46.   int stopline=1, startline=ReadInfo("lines");
  47.  
  48.   if (new) {
  49.     int tabsize, bytepos, del, column, counter;
  50.     string output;
  51.     Visible(0);
  52.     if (ReadInfo("block_exist")) {
  53.       stopline=ReadInfo("block_begin_y");
  54.       startline=ReadInfo("block_end_y")-1;
  55.     }
  56.     CurrentBuffer(new);
  57.     Status(id, "Space converting.");
  58.     tabsize=ReadInfo("tab_size");
  59.     GotoLine(startline, ReadInfo("line_length", new, startline));
  60.     while (Search("  ", "f-")>=0 && ReadInfo("line")>=stopline) {
  61.       switch ((ReadInfo("column"))%tabsize) {
  62.       case tabsize-1:
  63.         bytepos=ReadInfo("byte_position")-1;
  64.         del=2;
  65.         output="\t";
  66.         while (bytepos>=0 && GetChar(bytepos)==' ') {
  67.           bytepos--;
  68.           if (!(del%tabsize))
  69.             output+="\t";
  70.           del++;
  71.           CursorLeft();
  72.         }
  73.         Delete(del);
  74.         Output(output);
  75.         if (!(counter++&15))
  76.           Status(id, ltostr(ReadInfo("line")-stopline));
  77.         break;
  78.       case 0:
  79.         CursorRight();
  80.       }
  81.     }
  82.     Kill(new);
  83.     CurrentBuffer(id);
  84.     Visible(1);
  85.   }
  86. }
  87.  
  88. AssignKey("ExecuteFile(\"TabConvert.FPL\", \"TabToSpace();\");", "Amiga 'tab'");
  89. AssignKey("ExecuteFile(\"TabConvert.FPL\", \"SpaceToTab();\");", "Amiga Shift 'tab'");
  90.  
  91.